package com.itany.corejava.code13_jdbc;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Miss Chen
 * @version 1.0
 * @date 2024年08月07日9:48
 */
public class Test03_PreparedStatement {
    public static final String JDBC_URL="jdbc:mysql://127.0.0.1:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
    public static void main(String[] args) {
        List<User> users=login("tom","123456");
        System.out.println(users);
    }
    public static List<User> login(String username, String password){

        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        List<User> users=new ArrayList<>();
        try {
            // 1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2.获取连接
            conn= DriverManager.getConnection(JDBC_URL,"root","root");
            String sql="select * from t_user where username=? and password=?";
            ps=conn.prepareStatement(sql);
            // 预编译SQL语句，为SQL语句中的所有的变量赋值
            // 每一个?问号表示一个变量
            // 按顺序为每一个变量赋值，顺序是?的顺序，起始值为1
            // 参数1：第几个参数
            // 参数2：实际传递的参数的值
            ps.setString(1,username);
            ps.setString(2,password);


            //执行查询操作
            rs=ps.executeQuery();
            while(rs.next()){
                User user=new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setPhone(rs.getString("phone"));
                user.setAddress(rs.getString("address"));
                users.add(user);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    System.out.println("释放资源出错");
                }
            }
            if(ps!=null){
                try {
                   ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    System.out.println("释放资源出错");
                }
            }
            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    System.out.println("释放资源出错");
                }
            }
        }
        return users;
    }
}
